There are essentially two types of array processors--MIMD (multiple-instruction-multiple-data) and SIMD (single-instruction-multiple-data). In a MIMD array processor each of the processing elements in the array executes its own unique instruction stream with its own data. This contrasts with an array processor of the type to which the present invention is directed, that is a SIMD array processor, in that the individual processing elements operate instead under the control of a common instruction stream, this means that a SIMD machine is less flexible and can execute a more limited range of functions in parallel than a MIMD machine. However, the parallel processing elements of a SIMD machine are typically simpler and more numerous than in a MIMD processor.
Many SIMD array processors consist of a two-dimensional array of processing elements, each processing element being connected to its nearest neighbors to form a so-called NEWS (North, East, West, South) network. Examples of array processors of this type are the ICL Distributed Array Processor (DAP), and the "Connection Machine" which are described in "Parallel Computers" by Hockney & Jesshope, Adam Hilger Ltd. 1981, pp. 182-184 and "The Connection Machine" by W. Daniel Hillis, MIT Press 1986, pp. 74-76 respectively. UK -A-1445714 is also illustrative of a prior art SIMD array processor.
An example of the lack of flexibility if a SIMD machine arranged as a NEWS network can be seen with regard to a shift instruction. In a conventional NEWS network all processing elements will receive data from their neighbor one place away in a given direction e.g. South. The direction of shift for each processing element in a conventional NEWS network is globally and uniformly determined as a parameter of a global machine instruction being executed with the result that all processing elements shift data in the same direction. A typical instruction would be to shift the data three places North. The only exception to this known from the prior art is that some machines are able to selectively enable the processing elements in the NEWS network using a mask function so that the processing elements which have been enabled receive the global instructions. Also, in European Patent Application EP-A-208.457 a processor array is described on which each processing element in the array is able to select the element from which it takes its input.
The object of the present invention is to provide a SIMD array processor comprising a multi-dimensional array of processing elements which has an enhanced degree of flexibility to enable the potential for parallel processing to be better exploited without resorting to the expense and complexity of a MIMD processor.